package com.ligure.observer;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2017/3/1.
 * 被观察者是一个主题，它维护了一个观察者列表，并提供了用于添加、删除和通知观察者的接口。
 * 当被观察者状态发生改变时，它将遍历其观察者列表并调用每个观察者的更新方法。
 */
public class Subject {
    private int state;
    private List<Observer> list = new ArrayList<Observer>();
    public int getState() {
        return state;
    }
    public void setState(int state) {
        this.state = state;
        notified();
    }
    public void attach(Observer o) {
        list.add(o);
    }
    public void detach(Observer o) {
        list.remove(o);
    }
    public void notified() {
        for (Observer o : list) {
            o.update(this);
        }
    }
}
